-- ~/.config/nvim/lua/core/buffer_mgmt.lua
local M = {}

function M.smart_close()
  -- 获取当前状态
  local current_win = vim.api.nvim_get_current_win()
  local current_buf = vim.api.nvim_get_current_buf()
  local ft = require("nvim-tree.view")

  -- 如果当前是文件树，则不做任何操作
  if vim.bo.filetype == "NvimTree" then
    vim.notify("文件树中不能关闭文件", vim.log.levels.WARN)
    return
  end

  -- 关闭当前缓冲区
  vim.cmd("silent! bd " .. current_buf)

  -- 查找剩余的可聚焦窗口
  for _, win in ipairs(vim.api.nvim_list_wins()) do
    local buf = vim.api.nvim_win_get_buf(win)
    if vim.bo[buf].filetype ~= "NvimTree" then
      vim.api.nvim_set_current_win(win)
      -- 平衡窗口布局（解决文件树挤压问题）
      vim.cmd("wincmd =")
      return
    end
  end

  -- 如果没有其他文件窗口，则不做操作（保持文件树不自动展开）
  vim.notify("所有文件已关闭", vim.log.levels.INFO)
end

return M
